/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package all_pet_iv.business;

import all_pet_iv.database.*;
import com.mysql.jdbc.Connection;
import com.sforce.ws.ConnectionException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class Fachada {

    private Connection conexao;

    public Fachada() throws SQLException {
        this.conexao = (Connection) Conexao.getConexao();
    }

    public Connection getConexao() {
        return conexao;
    }

    public ResultSet carregarTabelaEditarProdutos(String tipo) throws SQLException{
        return Selecionar.produto(tipo);
    }

    public void editarProduto(String codigo, double quantidadeCritica, double solicitacaoPadrao,double precoVenda) throws SQLException{
        Produto produto = new Produto(codigo,quantidadeCritica, solicitacaoPadrao, precoVenda);
        Editar.produto(produto);
    }

    public ResultSet contarLinhasProduto(String tipo) throws SQLException{
        return Selecionar.contarLinhas(tipo);
    }

    public void excluirProduto(int codigo) throws SQLException {
        Excluir.produto(codigo);
    }
    
   
    public void caixa(String codigo,double quantidade) throws SQLException{
        Produto produto = new Produto(codigo,quantidade);
        Editar.venderLocal(produto);
        
    }
    
    
    public boolean verificarProduto(String codigo) throws SQLException{
        return Selecionar.verificarProduto(codigo);
    }
    
    public void comprar(String codigo, String nome, String tipo, double quantidadeAtual,
            String metrica, double precoCusto) throws SQLException,ConnectionException {
        Editar.editarForce(codigo,quantidadeAtual);
        Produto produto = new Produto(codigo,nome,tipo,quantidadeAtual,metrica,precoCusto);
        Cadastrar.produtoNovo(produto);
        
    }

    public List retornarProdutos(List arrayCodigos) throws SQLException {
        List<Produto> l = new ArrayList<Produto>();
        for(int i=0;i<arrayCodigos.size();i++){
            ResultSet rs = Selecionar.retornarProduto((String)arrayCodigos.get(i));
            rs.next();
            Double qtdAtual = rs.getDouble("quantidadeAtual");
            Double qtdCritica = rs.getDouble("quantidadeCritica");
            Double solicitacaoPadrao = rs.getDouble("solicitacaoPadrao");
            String codigo = rs.getString("cod_produto");
            Produto p = new Produto(qtdAtual,qtdCritica,solicitacaoPadrao,codigo);
            l.add(p);
        }
        return l;
    }
    
    public void vender(List<String> arrayCodigos) throws SQLException, ConnectionException{
        List<Produto> arrayProdutos = this.retornarProdutos(arrayCodigos);
        for(Produto p : arrayProdutos){
            if(p.getQuantidadeAtual() <= p.getQuantidadeCritica()){
                Editar.editarForce(p.getCodigo(),p.getSolicitacaoPadrao());
                Editar.reporProduto(p);
            }
        }
    }
    
}
